<?php
/**
 * Created by JetBrains PhpStorm.
 * User: Administrator
 * Date: 22/06/11
 * Time: 17:29
 * To change this template use File | Settings | File Templates.
 */
require_once(Config::acquire('Controller', null, 'controller'));
class EmployeeController extends Controller
{

    /**
     * Index:
     * Hier wordt in het kort info gegeven over employee.
     * @return void
     */
    public function index()
    {

        $this->view->assign('register_type', "Medewerkers");
        $this->view->render("Medewerker.tpl");
    }

    /**
     * Toevoegen:
     * Gegevens employee worden klaargezet om in een formulier te worden gezet
     * @return void
     */
    public function toevoegen()
    {
        $this->view->assign('form_URL', SDS::getURL('Employee', 'add', null));
        $this->view->render("Medewerker_Change.tpl");
    }

    /**
     * Detail:
     * Gedetaileerde omschrijving van een employee.
     * Bij klikken op wijzigen of verwijderen ga je naar betreffende onderdeel toe.
     * @return void
     */
    public function detail()
    {
        require_once(Config::acquire('Medewerker', MODEL));
        $params = UrlDecoder::get_Params();

        if (!isset($params[0]))
            SDS::redirect("Employee", "show");
        $id = $params[0];
        foreach (Medewerker::read($id)->toArray() as $key => $value) {
            $this->view->assign($key, $value);
        }
        $this->view->assign('wijzig_url', SDS::getURL('Employee', 'bewerken', array($params[0])));
        $this->view->assign('verwijder_url', SDS::getURL('Employee', 'delete', array($params[0])));
        $this->view->assign('register_type', "Medewerker details");
        $this->view->render('Medewerker_Detail.tpl');
    }
    /**
     * Overzicht:
     * Hier wordt een ovverzicht weergegeven en bij klikken op ID ga je naar detail
     * @return void
     */
    public function overzicht()
    {
        $list = array();
        foreach (Medewerker::readAll() as $medewerker)
            $list[] = $medewerker->toArray();
        $this->view->assign('register_type', "Medewerker Overzicht");
        $this->view->assign('detail_link', SDS::getURL('Employee', 'detail'));
        $this->view->assign("employees", $list);
        $this->view->render('Medewerker_List.tpl');
    }

  /**
     * Bewerken:
     * het terughalen van de oude opties en de mogelijkheid om deze te veranderen.
     * wordt direct doorgestuurd naar het formulier.
     *
     * @return void
     */
    public function bewerken()
    {
        require_once(Config::acquire('Medewerker', MODEL));
        $params = UrlDecoder::get_Params();
        if (!isset($params[0]))
            SDS::redirect("Employee", "show");
        $id = $params[0];
        foreach (Medewerker::read($id)->toArray() as $key => $value) {
            $this->view->assign($key, $value);
        }
        $this->view->assign('form_URL', SDS::getURL('Employee', 'update', array($id)));

        $this->view->render("Medewerker_Change.tpl");
    }


   /**
 * Delete:
 * Hier wordt een bestaand gegeven gedeleted op moment dat de functie wordt aangeroepen
 * @return void
 *
 */
    public function delete()
    {
        $id = UrlDecoder::get_Params();
        if (isset($id[0])) {
            Medewerker::read($id[0])->delete();
            SDS::redirect("Employee", "overzicht", null);
        }
    }

    /**
 * Add:
 * Hier wordt het invul formulier aangeroepen om een dienst toe te voegen
 * @return void
 */
    public function add()
    {
        require_once(Config::acquire('Medewerker', MODEL));
        require_once(Config::acquire('FormValidation', APPLICATION));
        FormValidation::stripInput();
        Medewerker::create(null,
                           $_POST['Voornaam'],
                           $_POST['Achternaam'],
                           $_POST['Gebruikersnaam'],
                           $_POST['Wachtwoord'],
                           $_POST['Clearence'],
                           date("YYYY-nn-jj"))->update();

        SDS::redirect("Employee", "index");
    }

    /**
     * Update:
     * Geeft de gegevens door aan de database en zet deze er in.
     * @return void
     */

    public function update()
    {
        require_once(Config::acquire('Medewerker', MODEL));
        require_once(Config::acquire('FormValidation', APPLICATION));
        FormValidation::stripInput();
        $params = UrlDecoder::get_Params();
        if (isset($params[0])) {
            $medewerker = Medewerker::read($params[0]);
            $medewerker->setAchternaam($_POST['Achternaam']);
            $medewerker->setGebruikersnaam($_POST['Gebruikersnaam']);
            $medewerker->setVoornaam($_POST['Voornaam']);
            $medewerker->setClearence($_POST['Clearence']);
            if (!empty($_POST['Wachtwoord']))
                $medewerker->setWachtwoord(Medewerker::encrypt($_POST['Wachtwoord']));
            $medewerker->update();
            SDS::redirect("Employee", "detail", $params[0]);
        }
        SDS::redirect("Employee", "show", null);
    }
}


